library(tidyverse)

#Definir usuario
ruta <- "C:/Users/Matias/Dropbox/Proyectos/Fondecyt Participacion Electoral/Articulos/Electoral Winners y Plebiscito/Harvard Dataverse/1. Presidential Election (study 1)/"

## Se cargan las bases de datos
load(paste0(ruta, "2. Database/PRE MAYO.Rdata"))
load(paste0(ruta, "2. Database/POST MAYO.Rdata"))
load(paste0(ruta, "2. Database/PRE NOV.Rdata"))
load(paste0(ruta, "2. Database/POST NOV.Rdata"))
load(paste0(ruta, "2. Database/Segunda Vuelta.Rdata"))

## Se agrega _w01 a las variables de la Ola 1 y _w02 a las variables de la Ola 2

ola_1 <- ola_1 %>% mutate_at(vars(starts_with(c("time","date")),ends_with("date")),
                              function(x)as.character(x)) %>%
    rename_at(vars(-FOLIO),function(x)paste0(x,"_w01"))
ola_2 <- ola_2 %>% mutate_at(vars(starts_with(c("time","date")),ends_with("date")),
                             function(x)as.character(x)) %>%
  rename_at(vars(-FOLIO),function(x)paste0(x,"_w02"))
ola_3 <- ola_3 %>% mutate_at(vars(starts_with(c("time","date")),ends_with("date")),
                             function(x)as.character(x)) %>%
  rename_at(vars(-FOLIO),function(x)paste0(x,"_w03"))
ola_4 <- ola_4 %>% mutate_at(vars(starts_with(c("time","date")),ends_with("date")),
                             function(x)as.character(x)) %>% 
  rename_at(vars(-FOLIO),function(x)paste0(x,"_w04"))
ola_5 <- ola_5 %>% mutate_at(vars(starts_with(c("time","date")), ends_with("date")),
                             function(x)as.character(x)) %>%
  rename_at(vars(-FOLIO),function(x)paste0(x,"_w05"))

## Se hace el merge entre las bases de datos y se identifican quienes no respondieron a la segunda ola

mayo_wide <- left_join(ola_1,ola_2,by = "FOLIO") %>% left_join(.,ola_3, by = "FOLIO") %>% 
  left_join(.,ola_4, by = "FOLIO") %>% left_join(.,ola_5, by = "FOLIO") %>%
  mutate(atricion_w02 = case_when(is.na(CODIGO_COMUNA_w02)~"Atrici?n",
                                  !is.na(CODIGO_COMUNA_w02)~"Permanece"),
         atricion_w03 = case_when(
           is.na(NOMBRE_SEXO_w03) ~ "Atrici?n",
           atricion_w02 == "Permanece" & !is.na(NOMBRE_SEXO_w03) ~ "Permanece",
           atricion_w02 == "Atrici?n" & !is.na(NOMBRE_SEXO_w03) ~ "Recuperado"),
         atricion_w04 = case_when(
           is.na(NOMBRE_SEXO_w04) ~ "Atrici?n",
           atricion_w03 == "Permanece" & !is.na(NOMBRE_SEXO_w04) ~ "Permanece",
           atricion_w03 == "Atrici?n" & !is.na(NOMBRE_SEXO_w04) ~ "Recuperado",
           atricion_w02 == "Atrici?n" & !is.na(NOMBRE_SEXO_w04) ~ "Recuperado"
         ),
         atricion_w05 = case_when(
           is.na(NOMBRE_SEXO_w05) ~ "Atrici?n",
           atricion_w04 == "Permanece" & !is.na(NOMBRE_SEXO_w05) ~ "Permanece",
           atricion_w04 == "Atrici?n" & !is.na(NOMBRE_SEXO_w05) ~ "Recuperado",
           atricion_w03 == "Atrici?n" & !is.na(NOMBRE_SEXO_w05) ~ "Recuperado",
           atricion_w02 == "Atrici?n" & !is.na(NOMBRE_SEXO_w05) ~ "Recuperado"
         ))

## Se guarda la base de datos wide

save(mayo_wide, file=paste0(ruta, "2. Database/MAYO_WIDE.Rdata"))

## Se transforma la base de datos a formato long

mayo_long <- pivot_longer(mayo_wide, cols = matches("_w0"), 
                          names_to = c(".value","ola"), names_sep = "_w0",
                          values_drop_na = TRUE) %>% 
  mutate(ola = factor(ola, levels = c(1,2,3,4), labels = c("Pre Elecci?n (Mayo)", "Post Elecci?n (Mayo)",
                                                         "Pre Elecci?n (Nov)","Post Elecci?n (Nov)")),
         atricion = ifelse(is.na(atricion) & ola == "Pre Elecci?n (Mayo)","Ola 1",atricion))

## Se guarda la base de datos long

save(mayo_long, file=paste0(ruta, "2. Database/LONG_MAYO.Rdata"))
